﻿<?xml version="1.0" encoding="utf-8"?>
<xsd:schema id="DesignerSchema" targetNamespace="http://schemas.microsoft.com/dsltools/Designer" elementFormDefault="qualified" xmlns="http://schemas.microsoft.com/dsltools/Designer" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <!-- WormModel -->
  <xsd:element name="wormModel" type="WormModel" />
  <xsd:complexType name="WormModel">
    <xsd:annotation>
      <xsd:documentation>The root in which all other elements are embedded. Appears as a diagram.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: WormModelHasEntities -->
      <xsd:element name="entities" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of WormModelHasEntities</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="wormModelHasEntities">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from WormModelHasEntities needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="entity" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: WormModelHasTables -->
      <xsd:element name="tables" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of WormModelHasTables</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="wormModelHasTables">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from WormModelHasTables needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="table" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: WormModelHasTypes -->
      <xsd:element name="types" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of WormModelHasTypes</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="wormModelHasTypes">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from WormModelHasTypes needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="wormType" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- dslVersion -->
    <xsd:attribute name="dslVersion" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Version of the model serialized in this file.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: DefaultNamespace -->
    <xsd:attribute name="defaultNamespace" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Default namespace used in case entity has no any namespace specified</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: SchemaVersion -->
    <xsd:attribute name="schemaVersion" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Schema Version</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: ClassNamePrefix -->
    <xsd:attribute name="classNamePrefix" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Class name prefix</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: ClassNameSuffix -->
    <xsd:attribute name="classNameSuffix" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Class Name Suffix</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: FileNameSuffix -->
    <xsd:attribute name="fileNameSuffix" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>File Name Suffix</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Split -->
    <xsd:attribute name="split" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Split</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: EntitySchemaDefClassNameSuffix -->
    <xsd:attribute name="entitySchemaDefClassNameSuffix" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Entity Schema Def Class Name Suffix</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: PrivateMembersPrefix -->
    <xsd:attribute name="privateMembersPrefix" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Private Members Prefix</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: FileNamePrefix -->
    <xsd:attribute name="fileNamePrefix" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>File Name Prefix</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: DerivedGenericMembersRequireConstraits -->
    <xsd:attribute name="derivedGenericMembersRequireConstraits" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Generic члены производных классов требует наличия констрейтов</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: MethodsInsteadParametrizedProperties -->
    <xsd:attribute name="methodsInsteadParametrizedProperties" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Генерировать методы вместо параметризованых пропертей</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: AddOptionsStrict -->
    <xsd:attribute name="addOptionsStrict" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Add Options Strict</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: OptionsStrictOn -->
    <xsd:attribute name="optionsStrictOn" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Options Strict On</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: AddOptionsExplicit -->
    <xsd:attribute name="addOptionsExplicit" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Add Options Explicit</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: OptionsExplicitOn -->
    <xsd:attribute name="optionsExplicitOn" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Options Explicit On</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: GenerateCSUsingStatement -->
    <xsd:attribute name="generateCSUsingStatement" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Generate CSUsing Statement</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: GenerateVBUsingStatement -->
    <xsd:attribute name="generateVBUsingStatement" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Generate VBUsing Statement</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: SafeUnboxToEnum -->
    <xsd:attribute name="safeUnboxToEnum" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Безопасная распаковка переменных с кастом в энам</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: GenerateCsIsStatement -->
    <xsd:attribute name="generateCsIsStatement" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Generate Cs Is Statement</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: GenerateVbTypeOfIsStatement -->
    <xsd:attribute name="generateVbTypeOfIsStatement" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Generate Vb Type Of Is Statement</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: GenerateCsAsStatement -->
    <xsd:attribute name="generateCsAsStatement" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Generate Cs As Statement</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: GenerateVbTryCastStatement -->
    <xsd:attribute name="generateVbTryCastStatement" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Generate Vb Try Cast Statement</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: GenerateCsLockStatement -->
    <xsd:attribute name="generateCsLockStatement" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Generate Cs Lock Statement</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: GenerateVbSyncLockStatement -->
    <xsd:attribute name="generateVbSyncLockStatement" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Generate Vb Sync Lock Statement</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- WormModel Moniker -->
  <xsd:element name="wormModelMoniker" type="WormModelMoniker" />
  <xsd:complexType name="WormModelMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for WormModel instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Entity -->
  <xsd:element name="entity" type="Entity" />
  <xsd:complexType name="Entity">
    <xsd:annotation>
      <xsd:documentation>Сущность</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: EntityHasProperties -->
      <xsd:element name="properties" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of EntityHasProperties</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="entityHasProperties">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from EntityHasProperties needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="property" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: EntityReferencesTargetEntities -->
      <xsd:element name="targetEntities" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of EntityReferencesTargetEntities</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element ref="entityReferencesTargetEntities" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>[Instance of EntityReferencesTargetEntities needs to be serialized in full-form]</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: EntityHasSupressedProperties -->
      <xsd:element name="supressedProperties" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of EntityHasSupressedProperties</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="entityHasSupressedProperties">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from EntityHasSupressedProperties needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="supressedProperty" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: EntityHasSelfRelations -->
      <xsd:element name="selfRelations" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of EntityHasSelfRelations</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="entityHasSelfRelations">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from EntityHasSelfRelations needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="selfRelation" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Name -->
    <xsd:attribute name="name" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Наименование сущности</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Namespace -->
    <xsd:attribute name="namespace" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Пространство имен для сущности</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Behaviour -->
    <xsd:attribute name="behaviour" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Entity generator behaviour</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Description -->
    <xsd:attribute name="description" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Описание сущности</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: UseGenerics -->
    <xsd:attribute name="useGenerics" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Определяет генерировать generic или строго типизированные методы</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: MakeInterface -->
    <xsd:attribute name="makeInterface" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Определяет генерировать интерфейс для сущности</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: BaseEntity -->
    <xsd:attribute name="baseEntity" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>ИД базовой сущности</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: InheritsBase -->
    <xsd:attribute name="inheritsBase" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Inherits table list from base entity.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Entity Moniker -->
  <xsd:element name="entityMoniker" type="EntityMoniker" />
  <xsd:complexType name="EntityMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Entity instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Table -->
  <xsd:element name="table" type="Table" />
  <xsd:complexType name="Table">
    <xsd:annotation>
      <xsd:documentation>Tаблицa БД</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: TableReferencesEntities -->
      <xsd:element name="entities" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of TableReferencesEntities</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="tableReferencesEntities">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from TableReferencesEntities needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="entityMoniker" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <!-- Property: Name -->
    <xsd:attribute name="name" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Имя таблицы</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Schema -->
    <xsd:attribute name="schema" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Schema name for table</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Table Moniker -->
  <xsd:element name="tableMoniker" abstract="true" type="TableMoniker" />
  <xsd:complexType name="TableMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Table instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- Property -->
  <xsd:element name="property" type="Property" />
  <xsd:complexType name="Property">
    <xsd:annotation>
      <xsd:documentation>Свойство сущности</xsd:documentation>
    </xsd:annotation>
    <!-- Property: Name -->
    <xsd:attribute name="name" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Имя свойства</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Type -->
    <xsd:attribute name="type" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Тип свойства (возможна ссылка на сущность)</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Description -->
    <xsd:attribute name="description" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Описание свойства</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: FieldName -->
    <xsd:attribute name="fieldName" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Наименование колонки из БД</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Table -->
    <xsd:attribute name="table" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Ссылка на таблицу БД</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: FieldAccessLevel -->
    <xsd:attribute name="fieldAccessLevel" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Уровень доступа к полю класса</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Alias -->
    <xsd:attribute name="alias" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Property alias</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: AccessLevel -->
    <xsd:attribute name="accessLevel" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Уровень доступа к полю класса</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Nullable -->
    <xsd:attribute name="nullable" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Nullable</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Disabled -->
    <xsd:attribute name="disabled" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Признак отключения проперти</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Obsolete -->
    <xsd:attribute name="obsolete" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Make property obsolete</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: ObsoleteDescription -->
    <xsd:attribute name="obsoleteDescription" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Description for obsolete property</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: EnablePropertyChanged -->
    <xsd:attribute name="enablePropertyChanged" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Включает для свойства поднятие события PropertyChanged, при этом реализация идет на уровне конкретной сущности. При этом в целом для сущности отключается общий механизм этого события.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: PK -->
    <xsd:attribute name="pK" type="BooleanEnum" />
    <!-- Property: Factory -->
    <xsd:attribute name="factory" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Factory</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: InsertDefault -->
    <xsd:attribute name="insertDefault" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>InsertDefault</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: PrimaryKey -->
    <xsd:attribute name="primaryKey" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Primary Key</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Private -->
    <xsd:attribute name="private" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Private</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: ReadOnly -->
    <xsd:attribute name="readOnly" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Read Only</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: RowVersion -->
    <xsd:attribute name="rowVersion" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Row Version</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: RV -->
    <xsd:attribute name="rV" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>RV</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: SyncInsert -->
    <xsd:attribute name="syncInsert" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Sync Insert</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: SyncUpdate -->
    <xsd:attribute name="syncUpdate" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Sync Update</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Supressed -->
    <xsd:attribute name="supressed" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Supressed</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Property Moniker -->
  <xsd:element name="propertyMoniker" abstract="true" type="PropertyMoniker" />
  <xsd:complexType name="PropertyMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Property instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- SupressedProperty -->
  <xsd:element name="supressedProperty" type="SupressedProperty" />
  <xsd:complexType name="SupressedProperty">
    <xsd:annotation>
      <xsd:documentation>Supressed Property</xsd:documentation>
    </xsd:annotation>
    <!-- Property: Name -->
    <xsd:attribute name="name" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Property name</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Type -->
    <xsd:attribute name="type" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Suppressed property type</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- SupressedProperty Moniker -->
  <xsd:element name="supressedPropertyMoniker" abstract="true" type="SupressedPropertyMoniker" />
  <xsd:complexType name="SupressedPropertyMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for SupressedProperty instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- SelfRelation -->
  <xsd:element name="selfRelation" type="SelfRelation" />
  <xsd:complexType name="SelfRelation">
    <xsd:annotation>
      <xsd:documentation>Связь сущности самой с собой</xsd:documentation>
    </xsd:annotation>
    <!-- Property: DirectAccessor -->
    <xsd:attribute name="directAccessor" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Имя связанной сущности для генерации методов</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: DirectCascadeDelete -->
    <xsd:attribute name="directCascadeDelete" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Kаскадное удаление</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: DirectFieldName -->
    <xsd:attribute name="directFieldName" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Имя поля таблицы связи</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Disabled -->
    <xsd:attribute name="disabled" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Disable relation</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: ReverseAccessor -->
    <xsd:attribute name="reverseAccessor" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Имя связанной сущности для генерации методов</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: ReverseCascadeDelete -->
    <xsd:attribute name="reverseCascadeDelete" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Каскадное удаление</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: ReverseFieldName -->
    <xsd:attribute name="reverseFieldName" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Имя поля таблицы связи</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Table -->
    <xsd:attribute name="table" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Имя таблицы связи</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: UnderlyingEntity -->
    <xsd:attribute name="underlyingEntity" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Сущность реализующая связь</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: DirectAccessedEntityType -->
    <xsd:attribute name="directAccessedEntityType" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Тип связанной сущности для генерации методов</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: ReverseAccessedEntityType -->
    <xsd:attribute name="reverseAccessedEntityType" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Тип связанной сущности для генерации методов</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Name -->
    <xsd:attribute name="name" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Name</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- SelfRelation Moniker -->
  <xsd:element name="selfRelationMoniker" abstract="true" type="SelfRelationMoniker" />
  <xsd:complexType name="SelfRelationMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for SelfRelation instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- WormType -->
  <xsd:element name="wormType" type="WormType" />
  <xsd:complexType name="WormType">
    <xsd:annotation>
      <xsd:documentation>Worm type</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: WormTypeReferencesEntities -->
      <xsd:element name="entities" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of WormTypeReferencesEntities</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="wormTypeReferencesEntities">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from WormTypeReferencesEntities needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="entityMoniker" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <!-- Property: Name -->
    <xsd:attribute name="name" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Name</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: IdProperty -->
    <xsd:attribute name="idProperty" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Id Property</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Type -->
    <xsd:attribute name="type" type="TypeEnum" >
      <xsd:annotation>
        <xsd:documentation>Type</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Hint -->
    <xsd:attribute name="hint" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Hint</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- WormType Moniker -->
  <xsd:element name="wormTypeMoniker" abstract="true" type="WormTypeMoniker" />
  <xsd:complexType name="WormTypeMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for WormType instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- WormModelHasEntities -->
  <xsd:element name="wormModelHasEntities" abstract="true" type="WormModelHasEntities" />
  <xsd:complexType name="WormModelHasEntities" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Entity -->
      <xsd:element ref="entity" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- WormModelHasEntities Moniker -->
  <xsd:element name="wormModelHasEntitiesMoniker" abstract="true" type="WormModelHasEntitiesMoniker" />
  <xsd:complexType name="WormModelHasEntitiesMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for WormModelHasEntities instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- EntityHasProperties -->
  <xsd:element name="entityHasProperties" abstract="true" type="EntityHasProperties" />
  <xsd:complexType name="EntityHasProperties" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Property -->
      <xsd:element ref="property" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- EntityHasProperties Moniker -->
  <xsd:element name="entityHasPropertiesMoniker" abstract="true" type="EntityHasPropertiesMoniker" />
  <xsd:complexType name="EntityHasPropertiesMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for EntityHasProperties instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- EntityReferencesTargetEntities -->
  <xsd:element name="entityReferencesTargetEntities" type="EntityReferencesTargetEntities" />
  <xsd:complexType name="EntityReferencesTargetEntities">
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Entity -->
      <xsd:element ref="entityMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <!-- Property: UnderlyingEntity -->
    <xsd:attribute name="underlyingEntity" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Underlying entity</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: LeftCascadeDelete -->
    <xsd:attribute name="leftCascadeDelete" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Каскадное удаление</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: LeftFieldName -->
    <xsd:attribute name="leftFieldName" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Имя поля таблицы связи</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: LeftAccessorName -->
    <xsd:attribute name="leftAccessorName" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Имя связанной сущности для генерации методов</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Disabled -->
    <xsd:attribute name="disabled" type="BooleanEnum" />
    <!-- Property: Table -->
    <xsd:attribute name="table" type="xsd:string" />
    <!-- Property: LeftEntity -->
    <xsd:attribute name="leftEntity" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Сущность</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: LeftAccessedEntityType -->
    <xsd:attribute name="leftAccessedEntityType" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Тип связанной сущности для генерации методов</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: RightAccessedEntityType -->
    <xsd:attribute name="rightAccessedEntityType" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Тип связанной сущности для генерации методов</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: RightFieldName -->
    <xsd:attribute name="rightFieldName" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Имя поля таблицы связи</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: RightCascadeDelete -->
    <xsd:attribute name="rightCascadeDelete" type="BooleanEnum" >
      <xsd:annotation>
        <xsd:documentation>Каскадное удаление</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: RightAccessorName -->
    <xsd:attribute name="rightAccessorName" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Имя связанной сущности для генерации методов</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: RightEntity -->
    <xsd:attribute name="rightEntity" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Сущность</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- EntityReferencesTargetEntities Moniker -->
  <xsd:element name="entityReferencesTargetEntitiesMoniker" abstract="true" type="EntityReferencesTargetEntitiesMoniker" />
  <xsd:complexType name="EntityReferencesTargetEntitiesMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for EntityReferencesTargetEntities instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- EntityHasSupressedProperties -->
  <xsd:element name="entityHasSupressedProperties" abstract="true" type="EntityHasSupressedProperties" />
  <xsd:complexType name="EntityHasSupressedProperties" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end SupressedProperty -->
      <xsd:element ref="supressedProperty" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- EntityHasSupressedProperties Moniker -->
  <xsd:element name="entityHasSupressedPropertiesMoniker" abstract="true" type="EntityHasSupressedPropertiesMoniker" />
  <xsd:complexType name="EntityHasSupressedPropertiesMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for EntityHasSupressedProperties instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- EntityHasSelfRelations -->
  <xsd:element name="entityHasSelfRelations" abstract="true" type="EntityHasSelfRelations" />
  <xsd:complexType name="EntityHasSelfRelations" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end SelfRelation -->
      <xsd:element ref="selfRelation" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- EntityHasSelfRelations Moniker -->
  <xsd:element name="entityHasSelfRelationsMoniker" abstract="true" type="EntityHasSelfRelationsMoniker" />
  <xsd:complexType name="EntityHasSelfRelationsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for EntityHasSelfRelations instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- WormModelHasTables -->
  <xsd:element name="wormModelHasTables" abstract="true" type="WormModelHasTables" />
  <xsd:complexType name="WormModelHasTables" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Table -->
      <xsd:element ref="table" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- WormModelHasTables Moniker -->
  <xsd:element name="wormModelHasTablesMoniker" abstract="true" type="WormModelHasTablesMoniker" />
  <xsd:complexType name="WormModelHasTablesMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for WormModelHasTables instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- TableReferencesEntities -->
  <xsd:element name="tableReferencesEntities" abstract="true" type="TableReferencesEntities" />
  <xsd:complexType name="TableReferencesEntities" abstract="true" >
    <xsd:annotation>
      <xsd:documentation>Список используемых таблиц</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Entity -->
      <xsd:element ref="entityMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- TableReferencesEntities Moniker -->
  <xsd:element name="tableReferencesEntitiesMoniker" abstract="true" type="TableReferencesEntitiesMoniker" />
  <xsd:complexType name="TableReferencesEntitiesMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for TableReferencesEntities instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- WormModelHasTypes -->
  <xsd:element name="wormModelHasTypes" abstract="true" type="WormModelHasTypes" />
  <xsd:complexType name="WormModelHasTypes" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end WormType -->
      <xsd:element ref="wormType" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- WormModelHasTypes Moniker -->
  <xsd:element name="wormModelHasTypesMoniker" abstract="true" type="WormModelHasTypesMoniker" />
  <xsd:complexType name="WormModelHasTypesMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for WormModelHasTypes instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- WormTypeReferencesEntities -->
  <xsd:element name="wormTypeReferencesEntities" abstract="true" type="WormTypeReferencesEntities" />
  <xsd:complexType name="WormTypeReferencesEntities" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Entity -->
      <xsd:element ref="entityMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- WormTypeReferencesEntities Moniker -->
  <xsd:element name="wormTypeReferencesEntitiesMoniker" abstract="true" type="WormTypeReferencesEntitiesMoniker" />
  <xsd:complexType name="WormTypeReferencesEntitiesMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for WormTypeReferencesEntities instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- Enum PropertyAttribute -->
  <xsd:simpleType name="PropertyAttribute">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="PK"/>
      <xsd:enumeration value="ReadOnly"/>
      <xsd:enumeration value="None">
        <xsd:annotation>
          <xsd:documentation>none</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="SyncInsert">
        <xsd:annotation>
          <xsd:documentation>SyncInsert</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="SyncUpdate">
        <xsd:annotation>
          <xsd:documentation>SyncUpdate</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="InsertDefault">
        <xsd:annotation>
          <xsd:documentation>InsertDefault</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="RV">
        <xsd:annotation>
          <xsd:documentation>RV</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="RowVersion">
        <xsd:annotation>
          <xsd:documentation>RowVersion</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="PrimaryKey">
        <xsd:annotation>
          <xsd:documentation>PrimaryKey</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Private">
        <xsd:annotation>
          <xsd:documentation>Private</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Factory">
        <xsd:annotation>
          <xsd:documentation>Factory</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum TypeEnum -->
  <xsd:simpleType name="TypeEnum">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="UserType"/>
      <xsd:enumeration value="EntityType"/>
      <xsd:enumeration value="ClrType"/>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum BooleanEnum -->
  <xsd:simpleType name="BooleanEnum">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="False"/>
      <xsd:enumeration value="True"/>
    </xsd:restriction>
  </xsd:simpleType>
  
</xsd:schema>

